# init_db.py
from models import db, EquipmentDomain, Equipment
import json

# 初始化数据库
def init_db():
    db.create_all()  # 创建表结构
    # 从ProductList.json导入数据
    with open('ProductList.json', 'r', encoding='utf-8') as f:
        data = json.load(f)
    # 遍历JSON中的EquipmentDomain
    for domain_data in data['EquipmentDomain']:
        domain = EquipmentDomain(name=domain_data['name'])
        db.session.add(domain)
        db.session.flush()  # 临时提交，获取domain.id
        # 导入领域下的设备列表
        for equip_data in domain_data['list']:
            # 处理update_log为JSON字符串（原格式为列表，需序列化）
            update_log_str = json.dumps(equip_data.get('update_log', []))
            equip = Equipment(
                equip_name=equip_data.get('equip_name', ''),
                equip_type=equip_data.get('equip_type', ''),
                equip_id=equip_data.get('equip_id', ''),
                equip_user=equip_data.get('equip_user', ''),
                user_pos=equip_data.get('user_pos', ''),
                software_ver=equip_data.get('software_ver', ''),
                update_log=update_log_str,
                domain_id=domain.id,
                camera_type=equip_data.get('camera_type', ''),
                motion_type=equip_data.get('motion_type', ''),
                os_type=equip_data.get('os_type', '')
            )
            db.session.add(equip)
    db.session.commit()
    print("数据库初始化完成，数据导入成功")

if __name__ == '__main__':
    from flask import Flask
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///equipment.db'  # SQLite数据库路径
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    db.init_app(app)
    with app.app_context():
        init_db()